package org.example.servicefaculty.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.example.model.manage.bean.po.Counselor;
import org.example.model.manage.bean.po.Faculty;
import org.example.model.manage.bean.po.Major;
import org.example.model.manage.bean.po.Student;
import org.example.model.manage.bean.vo.FacultyCount;
import org.example.model.manage.bean.vo.MajorCount;

import java.util.List;

/**
 * <p>
 *  学院服务接口 - 学院只能管理自己学院内的专业、辅导员、学生
 * </p>
 *
 * @author author
 * @since 2025-08-14
 */
public interface FacultyService extends IService<Faculty> {

    // ========== 学院信息管理（只读） ==========
    
    /**
     * 根据学院ID获取学院信息
     */
    Faculty getFacultyById(Integer facultyId);

    // ========== 专业管理（学院内） ==========
    
    /**
     * 根据学院ID获取专业列表
     */
    List<Major> getMajorsByFacultyId(Integer facultyId);

    // ========== 辅导员管理（学院内） ==========
    
    /**
     * 根据学院ID获取辅导员列表
     */
    List<Counselor> getCounselorsByFacultyId(Integer facultyId);

    /**
     * 根据ID获取辅导员
     */
    Counselor getCounselorById(Integer id, Integer facultyId);

    // ========== 学生管理（学院内） ==========
    
    /**
     * 根据专业ID获取学生列表
     */
    List<Student> getStudentsByMajorId(Integer majorId, Integer facultyId);

    /**
     * 添加学生
     */
    Student addStudent(Student student, Integer facultyId);

    /**
     * 更新学生信息
     */
    Student updateStudent(Student student, Integer facultyId);

    /**
     * 删除学生
     */
    boolean deleteStudent(Integer studentId, Integer facultyId);

    // ========== 统计功能 ==========
    
    /**
     * 获取学院统计信息
     */
    FacultyCount getFacultyCount(Integer facultyId);

    /**
     * 根据学院ID获取专业统计列表
     */
    List<MajorCount> getMajorCountsByFacultyId(Integer facultyId);
}